/**
 * 树的算法
 * @params list     待转化数组
 * @params parentId 起始节点
 */
const getTrees = (list, parentId) =>{
    if (parentId === undefined) {
        parentId = 0
    }
    let items = {}
    // 获取每个节点的直属子节点，*记住是直属，不是所有子节点
    for (let i = 0; i < list.length; i++) {
        if (list[i].parentId === '' || list[i].parentId === undefined) {
           list[i].parentId = 0
        }
        let key = list[i].parentId
        if (items[key]) {
           items[key].push(list[i])
        } else {
           items[key] = []
           items[key].push(list[i])
        }
    }
    return formatTree(items, parentId)
}

/**
 * 利用递归格式化每个节点
 * @param items
 * @param parentId
 * @returns {Array}
 */
const formatTree = (items, parentId) =>{
    let result = []
    // 递归结束条件
    if (!items[parentId]) {
        return result
    }
    for (let t of items[parentId]) {
        // 递归调用
        t.children = formatTree(items, t.id)
        result.push(t)
    }
    return result
}
